﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="RecordType.cs" company="Rolosoft Ltd">
//   © Rolosoft Ltd
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

#region License

// Copyright 2013 Rolosoft Ltd
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#endregion

namespace Rsft.Net.Dns.Entities
{
    #region Usings

    using System;

    #endregion

    /// <summary>
    ///     3.2.2. TYPE values
    ///     TYPE fields are used in resource records.
    ///     Note that these types are a subset of QTYPEs.
    ///     TYPE  value  meaning
    /// </summary>
    /// <remarks>
    ///     See
    ///     <seealso cref="http://www.iana.org/assignments/dns-parameters" />
    /// </remarks>
    public enum RecordType : ushort
    {
        /// <summary>
        /// The none
        /// </summary>
        None = 0,

        /// <summary>
        ///     a IPV4 host address
        /// </summary>
        A = 1, 

        /// <summary>
        ///     an authoritative name server
        /// </summary>
        NS = 2, 

        /// <summary>
        ///     a mail destination (Obsolete - use MX)
        /// </summary>
        [Obsolete("Obsolete - use MX")]
        MD = 3, 

        /// <summary>
        ///     a mail forwarder (Obsolete - use MX)
        /// </summary>
        [Obsolete("Obsolete - use MX")]
        MF = 4, 

        /// <summary>
        ///     the canonical name for an alias
        /// </summary>
        CNAME = 5, 

        /// <summary>
        ///     marks the start of a zone of authority
        /// </summary>
        SOA = 6, 

        /// <summary>
        ///     a mailbox domain name (EXPERIMENTAL)
        /// </summary>
        MB = 7, 

        /// <summary>
        ///     a mail group member (EXPERIMENTAL)
        /// </summary>
        MG = 8, 

        /// <summary>
        ///     a mail rename domain name (EXPERIMENTAL)
        /// </summary>
        MR = 9, 

        /// <summary>
        ///     a null RR (EXPERIMENTAL)
        /// </summary>
        NULL = 10, 

        /// <summary>
        ///     a well known service description
        /// </summary>
        WKS = 11, 

        /// <summary>
        ///     a domain name pointer
        /// </summary>
        PTR = 12, 

        /// <summary>
        ///     host information
        /// </summary>
        HINFO = 13, 

        /// <summary>
        ///     mailbox or mail list information
        /// </summary>
        MINFO = 14, 

        /// <summary>
        ///     mail exchange
        /// </summary>
        MX = 15, 

        /// <summary>
        ///     text strings
        /// </summary>
        TXT = 16, 

        /// <summary>
        ///     The Responsible Person rfc1183
        /// </summary>
        RP = 17, 

        /// <summary>
        ///     AFS Data Base location
        /// </summary>
        AFSDB = 18, 

        /// <summary>
        ///     X.25 address rfc1183
        /// </summary>
        X25 = 19, 

        /// <summary>
        ///     ISDN address rfc1183
        /// </summary>
        ISDN = 20, 

        /// <summary>
        ///     The Route Through rfc1183
        /// </summary>
        RT = 21, 

        /// <summary>
        ///     Network service access point address rfc1706
        /// </summary>
        NSAP = 22, 

        /// <summary>
        ///     Obsolete, rfc1348
        /// </summary>
        [Obsolete("rfc1348")]
        NSAPPTR = 23, 

        /// <summary>
        ///     Cryptographic public key signature rfc2931 / rfc2535
        /// </summary>
        SIG = 24, 

        /// <summary>
        ///     Public key as used in DNSSEC rfc2535
        /// </summary>
        KEY = 25, 

        /// <summary>
        ///     Pointer to X.400/RFC822 mail mapping information rfc2163
        /// </summary>
        PX = 26, 

        /// <summary>
        ///     Geographical position rfc1712 (obsolete)
        /// </summary>
        [Obsolete]
        GPOS = 27, 

        /// <summary>
        ///     a IPV6 host address, rfc3596
        /// </summary>
        AAAA = 28, 

        /// <summary>
        ///     Location information rfc1876
        /// </summary>
        LOC = 29, 

        /// <summary>
        ///     Next Domain, Obsolete rfc2065 / rfc2535
        /// </summary>
        [Obsolete("Obsolete rfc2065 / rfc2535")]
        NXT = 30, 

        /// <summary>
        ///     Endpoint Identifier (Patton)
        /// </summary>
        EID = 31, 

        /// <summary>
        ///     Nimrod Locator (Patton)
        /// </summary>
        NIMLOC = 32, 

        /// <summary>
        ///     Location of services rfc2782
        /// </summary>
        SRV = 33, 

        /// <summary>
        ///     ATM Address (Dobrowski)
        /// </summary>
        ATMA = 34, 

        /// <summary>
        ///     The Naming Authority Pointer rfc3403
        /// </summary>
        NAPTR = 35, 

        /// <summary>
        ///     Key Exchange Delegation Record rfc2230
        /// </summary>
        KX = 36, 

        /// <summary>
        ///     CERT RFC2538
        /// </summary>
        CERT = 37, 

        /// <summary>
        ///     IPv6 address rfc3363 (rfc2874 rfc3226)
        /// </summary>
        A6 = 38, 

        /// <summary>
        ///     A way to provide aliases for a whole domain, not just a single domain name as with CNAME. rfc2672
        /// </summary>
        DNAME = 39, 

        /// <summary>
        ///     SINK Eastlake
        /// </summary>
        SINK = 40, 

        /// <summary>
        ///     OPT RFC2671
        /// </summary>
        OPT = 41, 

        /// <summary>
        ///     APL [RFC3123]
        /// </summary>
        APL = 42, 

        /// <summary>
        ///     Delegation Signer rfc3658
        /// </summary>
        DS = 43, 

        /// <summary>
        ///     SSH Key Fingerprint rfc4255
        /// </summary>
        SSHFP = 44, 

        /// <summary>
        ///     IPSECKEY rfc4025
        /// </summary>
        IPSECKEY = 45, 

        /// <summary>
        ///     RRSIG rfc3755
        /// </summary>
        RRSIG = 46, 

        /// <summary>
        ///     NSEC rfc3755
        /// </summary>
        NSEC = 47, 

        /// <summary>
        ///     DNSKEY 3755
        /// </summary>
        DNSKEY = 48, 

        /// <summary>
        ///     DHCID rfc4701
        /// </summary>
        DHCID = 49, 

        /// <summary>
        ///     NSEC3 rfc5155
        /// </summary>
        NSEC3 = 50, 

        /// <summary>
        ///     NSEC3PARAM rfc5155
        /// </summary>
        NSEC3PARAM = 51, 

        /// <summary>
        ///     Host Identity Protocol  [RFC-ietf-hip-dns-09.txt]
        /// </summary>
        HIP = 55, 

        /// <summary>
        ///     SPF rfc4408
        /// </summary>
        SPF = 99, 

        /// <summary>
        ///     IANA Reserved
        /// </summary>
        UINFO = 100, 

        /// <summary>
        ///     IANA Reserved
        /// </summary>
        UID = 101, 

        /// <summary>
        ///     IANA Reserved
        /// </summary>
        GID = 102, 

        /// <summary>
        ///     IANA Reserved
        /// </summary>
        UNSPEC = 103, 

        /// <summary>
        ///     Transaction key rfc2930
        /// </summary>
        TKEY = 249, 

        /// <summary>
        ///     Transaction signature rfc2845
        /// </summary>
        TSIG = 250, 

        /// <summary>
        ///     DNSSEC Trust Authorities          [Weiler]  13 December 2005
        /// </summary>
        TA = 32768, 

        /// <summary>
        ///     DNSSEC Lookaside Validation       [RFC4431]
        /// </summary>
        DLV = 32769
    }
}